﻿using System;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Net;



namespace TwoGesture
{
    class ControlAdministrador
    {
        private static ControlAdministrador ObjCtrAdministrador = null;
        private Conexion ObjConexion = Conexion.InsConexion();
        private string datosDoctor;

        public static ControlAdministrador InsCtrAdministrador()
        {
            if (ObjCtrAdministrador == null)
            {
                ObjCtrAdministrador = new ControlAdministrador();
            }
            return ObjCtrAdministrador;
        }

        public string GenerarUsuario(TextBox txtnombre, TextBox txtapaterno, TextBox txtamaterno,Label lblidpaciente)
        {
            string usuario = "";
            if (txtnombre.Text.Trim().ToString().Equals("") || txtapaterno.Text.Trim().ToString().Equals("") || txtamaterno.Text.Trim().ToString().Equals(""))
            {
                MessageBox.Show("Aun faltan datos necesarios para genererar el usuario");
            }
            else
            {
                SqlConnection ConexionSQL = ObjConexion.Enlace();
                ConexionSQL.Close();
                ObjConexion.Enlace();
                ConexionSQL.Open();
                SqlCommand sql = new SqlCommand("Select top 1 idpaciente from paciente order by idpaciente desc", ConexionSQL);
                int i = sql.ExecuteScalar().GetHashCode()+1;
                usuario=txtapaterno.Text.Substring(0,2)+txtamaterno.Text.Substring(0,1)+txtnombre.Text.Substring(0,1);
                if(lblidpaciente.Text.ToString().Equals(""))
                {
                    usuario = usuario + i;
                }
                else
                {
                    usuario = usuario + lblidpaciente.Text.ToString();
                }
                ConexionSQL.Close();
            }
            return usuario;
        }

        public string GenerarContraseña()
        {
            Random rnd = new Random();
            string nro = rnd.Next(0, 9999).ToString() + rnd.Next(0, 9999).ToString();
            return nro;
        }

        public bool ValidarBorrar(Label lblidusuario)
        {
            bool BanderaValidacion=false;
            if (!lblidusuario.Text.ToString().Equals(""))
            {
                BanderaValidacion = true;
            }
            else
            {
                MessageBox.Show("No se pudo dar de baja el paciente");
            }
            return BanderaValidacion;

        }

        public bool ValidarFormulario(TextBox txtnombre, TextBox txtapaterno, TextBox txtamaterno, Label LblUsuario, Label LblContrasenia,Label lblidPaciente, TextBox txtCorreo)
        {
            bool BanderaValidacion=false;
            if (lblidPaciente.Text.ToString().Equals(""))
            {
                if (txtnombre.Text.Trim().ToString().Equals("") || txtapaterno.Text.Trim().ToString().Equals("") || txtamaterno.Text.Trim().ToString().Equals("")
                    || LblContrasenia.Text.Trim().ToString().Equals("") || LblUsuario.Text.Trim().ToString().Equals("") | txtCorreo.Text.Trim().ToString().Equals(""))
                {
                    int cont = 0;
                    String texto = "Los siguientes campos estan vacios:\n";
                    if (txtnombre.Text.Trim().ToString().Equals(""))
                    {
                        cont = cont + 1;
                        texto = texto + "*Nombre \n";
                    }
                    if (txtapaterno.Text.Trim().ToString().Equals(""))
                    {
                        cont = cont + 1;
                        texto = texto + "*Apellido Paterno \n";
                    }
                    if (txtamaterno.Text.Trim().ToString().Equals(""))
                    {
                        cont = cont + 1;
                        texto = texto + "*Apellido Materno \n";
                    }
                    if (LblUsuario.Text.Trim().ToString().Equals(""))
                    {
                        cont = cont + 1;
                        texto = texto + "*Usuario \n";
                    }
                    if (LblContrasenia.Text.Trim().ToString().Equals(""))
                    {
                        cont = cont + 1;
                        texto = texto + "*Contraseña \n";
                    }
                    if (txtCorreo.Text.Trim().ToString().Equals(""))
                    {
                        cont = cont + 1;
                        texto = texto + "*Correo \n";
                    }

                    MessageBox.Show(texto);
                }
                else
                {
                    WebRequest request = null;
                    WebResponse response = null;
                    Uri url = new Uri("https://www.google.com.mx/?gfe_rd=cr&ei=kY17U-K5OKiR8Qen3YD4AQ");

                    try
                    {
                        request = System.Net.WebRequest.Create(url);
                        request.Timeout = 5000;
                        response = request.GetResponse();
                        response.Close();
                        request = null;
                       // MessageBox.Show("con conexion");
                        BanderaValidacion = true;
                    }
                    catch(Exception ex)
                    {
                        request = null;
                        MessageBox.Show("Correo no enviado: Fallo de conexión a la red!");
                        BanderaValidacion = false;
                    }
                    
                }
            }
            else
            {
                
                if (txtnombre.Text.Trim().ToString().Equals("") || txtapaterno.Text.Trim().ToString().Equals("") || txtamaterno.Text.Trim().ToString().Equals("")
                    || LblUsuario.Text.Trim().ToString().Equals("") | txtCorreo.Text.Trim().ToString().Equals(""))
                {
                    int cont = 0;
                    String texto = "Los siguientes campos estan vacios:\n";
                    if (txtnombre.Text.Trim().ToString().Equals(""))
                    {
                        cont = cont + 1;
                        texto = texto + "*Nombre \n";
                    }
                    if (txtapaterno.Text.Trim().ToString().Equals(""))
                    {
                        cont = cont + 1;
                        texto = texto + "*Apellido Paterno \n";
                    }
                    if (txtamaterno.Text.Trim().ToString().Equals(""))
                    {
                        cont = cont + 1;
                        texto = texto + "*Apellido Materno \n";
                    }
                    if (LblUsuario.Text.Trim().ToString().Equals(""))
                    {
                        cont = cont + 1;
                        texto = texto + "*Usuario \n";
                    }
                    if (txtCorreo.Text.Trim().ToString().Equals(""))
                    {
                        cont = cont + 1;
                        texto=texto + "*Correo \n";
                    }
                   
                    MessageBox.Show(texto);
                }
                else
                {
                    BanderaValidacion = true;
                }

            }
            
            return BanderaValidacion;
        }

        public void GuardarUsuario(TextBox txtnombre, TextBox txtapaterno, TextBox txtamaterno, Label LblUsuario, string LblContrasenia, Label LblId,Label lblidpaciente)
        {
            if (lblidpaciente.Text.ToString().Equals(""))
            {
                SqlConnection ConexionSQL = ObjConexion.Enlace();
                ObjConexion.Enlace();
                ConexionSQL.Close();
                ConexionSQL.Open();
                //String nueva = this.Encriptacion(contraseña);
                SqlCommand sql = new SqlCommand("insert into paciente values(@nombre,@apaterno,@amaterno,@usuario,@contrasenia,@iddoctor,default)", ConexionSQL);
                sql.Parameters.AddWithValue("@nombre", txtnombre.Text.ToString());
                sql.Parameters.AddWithValue("@apaterno", txtapaterno.Text.ToString());
                sql.Parameters.AddWithValue("@amaterno", txtamaterno.Text.ToString());
                sql.Parameters.AddWithValue("@iddoctor", LblId.Text.ToString());
                sql.Parameters.AddWithValue("@usuario", LblUsuario.Text.ToString());
                sql.Parameters.AddWithValue("@contrasenia", LblContrasenia);
                int i = sql.ExecuteNonQuery();

                if (i == 1)
                {
                    MessageBox.Show("El paciente: " + txtnombre.Text.ToString() + " " + txtapaterno.Text.ToString() + " " + txtamaterno.Text.ToString() + " fue agregado");
                }
                else
                {
                    MessageBox.Show("No se agrego el paciente");
                }
                ConexionSQL.Close();
            }
            else
            {
                SqlConnection ConexionSQL = ObjConexion.Enlace();
                ObjConexion.Enlace();
                ConexionSQL.Close();
                ConexionSQL.Open();
                //String nueva = this.Encriptacion(contraseña);
                SqlCommand sql = new SqlCommand("update paciente set Nombre=@nombre,APaterno=@apaterno,AMaterno=@amaterno,Usuario=@usuario where idpaciente=@idpaciente", ConexionSQL);
                sql.Parameters.AddWithValue("@nombre", txtnombre.Text.ToString());
                sql.Parameters.AddWithValue("@apaterno", txtapaterno.Text.ToString());
                sql.Parameters.AddWithValue("@amaterno", txtamaterno.Text.ToString());
                sql.Parameters.AddWithValue("@usuario", LblUsuario.Text.ToString());
                sql.Parameters.AddWithValue("@idpaciente", lblidpaciente.Text.ToString());
                int i = sql.ExecuteNonQuery();

                if (i == 1)
                {
                    MessageBox.Show("El paciente fue modificado con exito");
                }
                else
                {
                    MessageBox.Show("No se pudo modificar el registro");
                }
                ConexionSQL.Close();
            }
        }

        internal SqlDataReader LlenarTabla(Label id)
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("Select * from paciente where activo=1 and iddoctor="+id.Text.ToString(), ConexionSQL);
            SqlDataReader dr = cmd.ExecuteReader();
          
            return dr;
        }

        internal SqlDataReader LlenarTablausus(Label id)
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("Select distinct a.IdPaciente,a.Nombre,a.APaterno,a.AMaterno from paciente a inner join cuestionarioUsuario b"+
                " on a.IdPaciente=b.idusuario where a.activo=1 and b.activo=0 and a.iddoctor=" + id.Text.ToString(), ConexionSQL);
            SqlDataReader dr = cmd.ExecuteReader();

            return dr;
        }

        public void EliminarUsuario(Label lblidpaaciente)
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand sql = new SqlCommand("update paciente set activo=0 where idpaciente=@id", ConexionSQL);
            sql.Parameters.AddWithValue("@id", lblidpaaciente.Text.ToString());
            int i = sql.ExecuteNonQuery();

            if (i == 1)
            {
                MessageBox.Show("El Paciente fue dado de baja de manera exitosa");
            }
            else
            {
                MessageBox.Show("No se pudo dar de baja el paciente");
            }
            ConexionSQL.Close();
        }

        public void DatosDr(string id)
        {
            datosDoctor = id;
        }

        public string idDoctor()
        {
            
            return datosDoctor;
        }

        public void NombreCompleto(TextBox txtnombre, TextBox txtapaterno, TextBox txtamaterno)
        {
           
            NomComp = txtnombre.Text.ToString() + " " + txtapaterno.Text.ToString() + " " + txtamaterno.Text.ToString();
        }

        public string NomComp { get; set; }


        internal SqlDataReader LlenarTablacalif(string p)
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("select a.Cuestionario,b.calificacion from vw_paciente a inner join cuestionarioUsuario b on a.IdCuestionario=b.idcuestionario where a.IdPaciente="+p+" and b.activo=0", ConexionSQL);
            SqlDataReader dr = cmd.ExecuteReader();

            return dr;
        }
    }
}

        /*public string bool ComprobarFormatoEmail(string seMailAComprobar)
        {
            String sFormato;
            sFormato = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
            if (Regex.IsMatch(seMailAComprobar, sFormato))
            {
                if (Regex.Replace(seMailAComprobar, sFormato, String.Empty).Length == 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
            if (ComprobarFormatoEmail(tbEmail.Text) == false)
            {
                lEmailCorrecto.Text = "Dirección no valida";
                lEmailCorrecto.ForeColor = Color.Red;
            }
            else
            {
                lEmailCorrecto.Text = "Dirección valida";
                lEmailCorrecto.ForeColor = Color.Green;
            }
        }*/